Figura A2 1 SĂtios selecionados na base de dados TreeCo. a) latitude e longitude das coordenadas centrais dos inventĂĄrios florestais. b) boxplot de variĂĄveis dos inventĂĄrios: ĂĄrea da parcela, nĂșmero de indivĂduos amostrado, riqueza de espĂ©cies observado, e ano da amostragem ou da publicação. c) Classificação do estado de conservação ou sucessional da ĂĄrea amostrada no inventĂĄrio: primary (floresta primĂĄria, nĂŁo-alterada, primitiva, old-growth (â„80 anos de sucessĂŁo) ); primary/secondary (floresta em estĂĄgio avançado de sucessĂŁo (50 a 80 anos de sucessĂŁo)); secondary (floresta secundĂĄria, alterada, em estĂĄgio mĂ©dio de regeneração (20 a 50 anos de sucessĂŁo)); capoeira (floresta em estado inicial de sucessĂŁo (<20 anos de sucessĂŁo)).
Nas paisagens com pouco habitat o padrĂŁo mĂ©dio Ă© similar ao esperado em paisagens infinitas sem perda de habitat (ApĂȘndice 1): um patamar baixo de valores mĂ©dios em graus de limitação de dispersĂŁo severos; aumento brusco para um novo patamar em graus de limitação de dispersĂŁo menos severos; seguido por redução da taxa U com o aumento da capacidade de dispersĂŁo para graus brandos de limitação de dispersĂŁo (Figura A2 2 e 3). A variabilidade entre rĂ©plicas pode aumentar nos graus de limitação de dispersĂŁo pouco severos (Figura A2 2), onde hĂĄ o patamar superior de valores da taxa U nas paisagens sem perda de habitat (Figura A2 2 e 3).
Figura A2 2 Gråficos exploratórios da taxa U estimada e dos contrastes calculados. No painel da esquerda superior, coeficiente de variação da taxa U estimada por MNEE. Cada ponto representa uma bateria de simulação com 10 réplicas cada; no eixo x hå a média da taxa U e no eixo y o correspondente desvio padrão. Todas as retas passam pela origem, em preto a reta com inclinação de 1, em verde a com inclinação de 0.1, e em vermelho com inclinaçãao de 0.01. A maior parte dos pontos tem coeficiente de inclinação entre 10% e 1%. Nos paineis da direita superior e da linha de baixo hå os gråficos exploratórios dos contrastes, respectivamente: boxplots dos contrastes calculados, gråfico de dispersão dos contrastes de fragmentação per se e årea per se, e o contraste contemporùneo em função de p e colorido por k.
Figura A2 3 Taxa U estimada em cada sĂtio nos 20 graus de limitação de dispersĂŁo simulados. Os sĂtios estĂŁo organizados pela pela proporção de cobertura vegetal
Figura A2 4 GrĂĄficos explotĂĄrios dos contraste
Os GAMM utilizaram a cubic regression spline como função base nos splines simples e nos tensores entre as variĂĄveis preditoras (Janela de cĂłdigo 1). A estrutura aleatĂłria do GAMM foi especĂfica de modo que hĂĄ um intercepto e spline de k por inventĂĄrio florestal (Janela de cĂłdigo 1), com os splines de k por inventĂĄrio florestal compartilhando um mesmo parĂąmetro de penalização (veja @Pedersen2019).
Janela de cĂłdigo 1 GAMM usado para ajustar os contrastes
f_gam <- function(df){
gam(value ~
s(k_z,bs = "cr") + s(p_z,bs = "cr") +
ti(p_z,k_z) +
s(k_z, SiteCode, bs="fs",xt=list(bs="cr")) +
s(SiteCode,bs="re"),
data=df,method = "REML")
}
Janela de output R console 1 Validação dos GAMMs usados para descrever os contrastes da taxa U
## [1] "Var. resposta: efeito area"
## [1] "k.check:"
## k' edf k-index p-value
## s(k_z) 9 7.413600 0.8941608 0.0000
## s(p_z) 9 5.622889 1.1424476 1.0000
## ti(p_z,k_z) 16 14.961510 1.0047391 0.5825
## s(k_z,SiteCode) 1070 337.035140 0.8941608 0.0000
## s(SiteCode) 107 92.588654 NA NA
## [1] "summary:"
##
## Family: gaussian
## Link function: identity
##
## Formula:
## value ~ s(k_z, bs = "cr") + s(p_z, bs = "cr") + ti(p_z, k_z) +
## s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) + s(SiteCode,
## bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.08133 0.00454 17.91 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df F p-value
## s(k_z) 7.414 8.318 72.979 <2e-16 ***
## s(p_z) 5.623 5.700 91.075 <2e-16 ***
## ti(p_z,k_z) 14.962 15.199 57.401 <2e-16 ***
## s(k_z,SiteCode) 337.035 1066.000 9.181 <2e-16 ***
## s(SiteCode) 92.589 105.000 11.271 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.951 Deviance explained = 96.2%
## -REML = -3056.3 Scale est. = 0.0018896 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "Var. resposta: efeito conf"
## [1] "k.check:"
## k' edf k-index p-value
## s(k_z) 9 7.448122 0.994416 0.3975
## s(p_z) 9 1.388721 1.218644 1.0000
## ti(p_z,k_z) 16 4.815110 1.025527 0.8600
## s(k_z,SiteCode) 1070 472.003514 0.994416 0.4000
## s(SiteCode) 107 101.985658 NA NA
## [1] "summary:"
##
## Family: gaussian
## Link function: identity
##
## Formula:
## value ~ s(k_z, bs = "cr") + s(p_z, bs = "cr") + ti(p_z, k_z) +
## s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) + s(SiteCode,
## bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.27693 0.01928 14.37 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df F p-value
## s(k_z) 7.448 8.244 24.24 <2e-16 ***
## s(p_z) 1.389 1.396 123.84 <2e-16 ***
## ti(p_z,k_z) 4.815 4.990 29.39 <2e-16 ***
## s(k_z,SiteCode) 472.004 1066.000 218.66 <2e-16 ***
## s(SiteCode) 101.986 105.000 38.28 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.973 Deviance explained = 98.1%
## -REML = -1141.8 Scale est. = 0.0083167 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "Var. resposta: efeito frag"
## [1] "k.check:"
## k' edf k-index p-value
## s(k_z) 9 6.892299 1.059090 0.9950
## s(p_z) 9 1.000562 1.227261 1.0000
## ti(p_z,k_z) 16 4.289023 1.047488 0.9650
## s(k_z,SiteCode) 1070 503.768234 1.059090 0.9975
## s(SiteCode) 107 103.040964 NA NA
## [1] "summary:"
##
## Family: gaussian
## Link function: identity
##
## Formula:
## value ~ s(k_z, bs = "cr") + s(p_z, bs = "cr") + ti(p_z, k_z) +
## s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) + s(SiteCode,
## bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.19560 0.01823 10.73 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df F p-value
## s(k_z) 6.892 7.754 11.63 <2e-16 ***
## s(p_z) 1.001 1.001 75.63 <2e-16 ***
## ti(p_z,k_z) 4.289 4.458 10.49 <2e-16 ***
## s(k_z,SiteCode) 503.768 1066.000 509.44 <2e-16 ***
## s(SiteCode) 103.041 105.000 53.16 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.974 Deviance explained = 98.1%
## -REML = -1586.1 Scale est. = 0.0050262 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
O GAMM do contraste de ĂĄrea apresenta o melhor ajuste entre os GAMMs para os 3 contrastes. O spline indivĂdual para a variĂĄvel p apresenta a melhor estimativa do efeito parcial mĂ©dio, com o desvio padrĂŁo sendo mais uniforme ao longo da estimativa do efeito parcial mĂ©dio (grĂĄfico âs(p_z)â no output da função âgratia::drawâ; e outputs das funçÔes âmgcv::k.checkâ e âmgcv::summaryâ). Os splines indivĂduos para a variĂĄvel p nos GAMMs dos outros dois contrastes (contemporĂąneo e fragmentação per se) apresentam estimativa do efeito mĂ©dio que tendem Ă uma reta ; o ajuste do GAMM para o contraste de contemporaneidade parece ser mais adequado do que o fragmentação per se, pois o desvio padrĂŁo ao redor da estimativa de efeito mĂ©dio Ă© mais uniforme ao longo do gradiente da preditora (grĂĄfico âs(p_z)â do output da função âgratia::drawâ). Os 3 GAMMs nĂŁo fazem um bom ajuste de valores extremos dos contrastes (output da função âgratia:appraise - QQplot of residualsâ), o quĂȘ explica a melhor qualidade do GAMM para o contraste de ĂĄrea per se. O deviance explained dos GAMMs foram 96.2%, 98.1% e 98.1% para os contrastes de ĂĄrea, contemporaneidade e fragmentação per se, respectivamente. As estimativas de efeitos mĂ©dios dos splines da variĂĄvel k de cada inventĂĄrio florestal podem apresentar variação qualitativa do padrĂŁo dos efeitos mĂ©dios do spline geral para a variĂĄvel k ou do tensor entre a variĂĄvel k e a variĂĄvel p (output da função âgratia::drawâ).
Avaliação GAMMs contraste - taxa U: frag. per se ~ f(årea per se)
Janela de cĂłdigo 2 GAMM usado para ajustar os contrastes
md_frag_area <- gam(frag_z ~
s(area_z,bs="tp") +
s(area_z,SiteCode,bs="fs",xt=list(bs="tp")) +
s(SiteCode,bs="re"),
data=df,method = "REML")
Janela de output R console 2 Validação dos GAMMs usados para descrever os contrastes da taxa U
## [1] "Frag. per se ~ Area"
## [1] "k.check:"
## k' edf k-index p-value
## s(area_z) 9 8.202633 1.024628 0.8675
## s(area_z,SiteCode) 1070 150.652740 1.024628 0.8600
## s(SiteCode) 107 97.807460 NA NA
## [1] "summary:"
##
## Family: gaussian
## Link function: identity
##
## Formula:
## frag_z ~ s(area_z, bs = "tp") + s(area_z, SiteCode, bs = "fs",
## xt = list(bs = "tp")) + s(SiteCode, bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.07203 0.05253 1.371 0.17
##
## Approximate significance of smooth terms:
## edf Ref.df F p-value
## s(area_z) 8.203 8.601 16.57 <2e-16 ***
## s(area_z,SiteCode) 150.653 792.000 34.16 <2e-16 ***
## s(SiteCode) 97.807 106.000 18.43 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.863 Deviance explained = 87.9%
## -REML = 1322.6 Scale est. = 0.1372 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
Janela de output R console 3 Validação dos GAMMs mais plausĂveis
## [1] "cont.ideal"
## [1] "k.check:"
## k' edf k-index p-value
## s(contraste_z) 9 6.19210236 0.9788461 0.1675
## s(contraste_z,SiteCode) 1070 320.22559694 0.9788461 0.2125
## s(SiteCode) 107 0.04262927 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 500 - nCong) ~ s(contraste_z, bs = "cr") + s(contraste_z,
## SiteCode, bs = "fs", xt = list(bs = "cr")) + s(SiteCode,
## bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.44078 0.08537 40.3 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(contraste_z) 6.19210 6.783 134.318 <2e-16 ***
## s(contraste_z,SiteCode) 320.22560 858.000 31096.115 <2e-16 ***
## s(SiteCode) 0.04263 106.000 0.032 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.96 Deviance explained = 95.9%
## -REML = 9778.9 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "cont.non_frag"
## [1] "k.check:"
## k' edf k-index p-value
## s(k_z) 9 6.205597 1.0260742 0.9150
## s(p_z) 9 1.002124 1.4929634 1.0000
## ti(p_z,k_z) 16 1.954249 0.9921304 0.3700
## s(k_z,SiteCode) 1070 747.189721 1.0260742 0.9025
## s(SiteCode) 107 101.324332 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 500 - nCong) ~ s(k_z, bs = "cr") + s(p_z, bs = "cr") +
## ti(p_z, k_z) + s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) +
## s(SiteCode, bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.27328 0.04621 70.84 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(k_z) 6.206 6.641 76.65 < 2e-16 ***
## s(p_z) 1.002 1.002 65.18 < 2e-16 ***
## ti(p_z,k_z) 1.954 1.971 18.05 0.000486 ***
## s(k_z,SiteCode) 747.190 1066.000 692244.77 < 2e-16 ***
## s(SiteCode) 101.324 105.000 4554.38 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.941 Deviance explained = 95.7%
## -REML = 9236.4 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "non_frag.ideal"
## [1] "k.check:"
## k' edf k-index p-value
## s(contraste_z) 9 5.10261835 0.9720514 0.1000
## s(contraste_z,SiteCode) 1070 191.89084119 0.9720514 0.1475
## s(SiteCode) 107 0.06131299 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 500 - nCong) ~ s(contraste_z, bs = "cr") + s(contraste_z,
## SiteCode, bs = "fs", xt = list(bs = "cr")) + s(SiteCode,
## bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 3.53779 0.01802 196.3 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(contraste_z) 5.10262 5.731 443.695 <2e-16 ***
## s(contraste_z,SiteCode) 191.89084 992.000 4576.608 <2e-16 ***
## s(SiteCode) 0.06131 106.000 0.056 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.924 Deviance explained = 86.4%
## -REML = 7249.3 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
Figura A2 5 GrĂĄficos ExploratĂłrios geom_smoother(method=âgamâ)
Figura A2 6 GrĂĄficos diagnĂłsticos do pacote DHARMa para o modelo mais plausĂvel para descrever o erro na riqueza estimada
Janela de output R console 4 sumĂĄrio do modelo mais plausĂvel para descrever o erro na riqueza estimada
## Linear mixed model fit by REML ['lmerMod']
## Formula: diffS ~ land_hyp * p + (1 | SiteCode)
## Data: df_md
##
## REML criterion at convergence: -35553
##
## Scaled residuals:
## Min 1Q Median 3Q Max
## -6.7457 -0.6278 -0.0252 0.6179 4.5786
##
## Random effects:
## Groups Name Variance Std.Dev.
## SiteCode (Intercept) 7.115e-06 0.002667
## Residual 2.239e-04 0.014962
## Number of obs: 6420, groups: SiteCode, 107
##
## Fixed effects:
## Estimate Std. Error t value
## (Intercept) -0.0051098 0.0008413 -6.074
## land_hypideal 0.0160866 0.0009302 17.293
## land_hypnon_frag 0.0171015 0.0009302 18.384
## p 0.0026883 0.0012736 2.111
## land_hypideal:p -0.0089133 0.0014083 -6.329
## land_hypnon_frag:p -0.0090804 0.0014083 -6.448
##
## Correlation of Fixed Effects:
## (Intr) lnd_hy lnd_h_ p lnd_h:
## land_hypidl -0.553
## lnd_hypnn_f -0.553 0.500
## p -0.871 0.481 0.481
## lnd_hypdl:p 0.481 -0.871 -0.435 -0.553
## lnd_hypnn_: 0.481 -0.435 -0.871 -0.553 0.500
## [1] "cont"
## [1] "k.check:"
## k' edf k-index p-value
## s(p_z) 9 1.045843 1.3532293 1.0000
## s(k_z) 9 7.326818 0.9740137 0.2200
## ti(p_z,k_z) 16 3.010620 0.9637999 0.0900
## s(k_z,SiteCode) 1070 671.569553 0.9740137 0.2725
## s(SiteCode) 107 69.358508 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 100 - nCong) ~ s(p_z, bs = "cr") + s(k_z, bs = "cr") +
## ti(p_z, k_z) + s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) +
## s(SiteCode, bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.3782 0.2356 10.1 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(p_z) 1.046 1.046 2.600e-01 0.613333
## s(k_z) 7.327 7.738 3.658e+01 0.000147 ***
## ti(p_z,k_z) 3.011 3.080 1.016e+01 0.025597 *
## s(k_z,SiteCode) 671.570 1066.000 2.430e+06 0.899924
## s(SiteCode) 69.359 105.000 1.775e+02 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.978 Deviance explained = 97.5%
## -REML = 6333.7 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "ideal"
## [1] "k.check:"
## k' edf k-index p-value
## s(p_z) 9 1.002557 1.3584944 1.00
## s(k_z) 9 8.619873 0.9534021 0.05
## ti(p_z,k_z) 16 2.968157 0.9042010 0.00
## s(k_z,SiteCode) 1070 667.485317 0.9534021 0.05
## s(SiteCode) 107 102.047594 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 100 - nCong) ~ s(p_z, bs = "cr") + s(k_z, bs = "cr") +
## ti(p_z, k_z) + s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) +
## s(SiteCode, bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.5203 0.2317 10.88 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(p_z) 1.003 1.003 9.460e-01 0.3308
## s(k_z) 8.620 8.726 1.781e+02 <2e-16 ***
## ti(p_z,k_z) 2.968 3.001 6.286e+00 0.0957 .
## s(k_z,SiteCode) 667.485 1066.000 4.604e+06 <2e-16 ***
## s(SiteCode) 102.048 105.000 6.474e+03 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.985 Deviance explained = 98%
## -REML = 6097.3 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"
## [1] "non_frag"
## [1] "k.check:"
## k' edf k-index p-value
## s(p_z) 9 1.611166 1.3520475 1.0000
## s(k_z) 9 8.537386 0.9759630 0.2700
## ti(p_z,k_z) 16 5.547434 0.9538288 0.0475
## s(k_z,SiteCode) 1070 652.707766 0.9759630 0.2850
## s(SiteCode) 107 101.269994 NA NA
## [1] "summary:"
##
## Family: binomial
## Link function: logit
##
## Formula:
## cbind(nCong, 100 - nCong) ~ s(p_z, bs = "cr") + s(k_z, bs = "cr") +
## ti(p_z, k_z) + s(k_z, SiteCode, bs = "fs", xt = list(bs = "cr")) +
## s(SiteCode, bs = "re")
##
## Parametric coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 2.4575 0.2419 10.16 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Approximate significance of smooth terms:
## edf Ref.df Chi.sq p-value
## s(p_z) 1.611 1.616 4.300e-01 0.6142
## s(k_z) 8.537 8.677 1.628e+02 <2e-16 ***
## ti(p_z,k_z) 5.547 5.666 1.995e+01 0.0023 **
## s(k_z,SiteCode) 652.708 1066.000 4.102e+06 <2e-16 ***
## s(SiteCode) 101.270 105.000 5.562e+03 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## R-sq.(adj) = 0.985 Deviance explained = 97.9%
## -REML = 6096.9 Scale est. = 1 n = 2140
## [1] "gratia::appraise:"
## [1] "gratia::draw:"